/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Informes;

import Entidades.Empleado;
import Entidades.EstadoLicencia;
import Entidades.Licencia;
import Expertos.ConvertirFechas;
import com.itextpdf.text.Document;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfWriter;
import java.io.FileOutputStream;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

/**
 *
 * @author diego
 */
public class InformeLicenciaPersonal {

    public InformeLicenciaPersonal() {
    }

    public void imprimir(Date fechadesde, Date fechahasta, String nombreArchivo, Empleado empleado) {
        Document documento = new Document();
        FileOutputStream ficheroPdf;
        String archivo = nombreArchivo;
        String cabecera, estado = "";
        Date fechaSistema = new Date();
        Date fechaBD;
        int fd = 0;
        int fh = 0;
        String nombreempleado = empleado.getApellido() + " " + empleado.getNombre() + "      Legajo: " + empleado.getLegajoEmpleado() + "       Oficina: " + empleado.getIdOficina().getNombreOficina();

        cabecera = "_____________________________________________________________________________" + "\n"
                + "\n"
                + "\n"
                + "                                            INFORME DE LICENCIA PERSONAL " + "\n"
                + "\n"
                + "\n"
                + "______________________________________________________________________________" + "\n"
                + "\n Periodo: " + ConvertirFechas.fechaAString(fechadesde) + "   " + ConvertirFechas.fechaAString(fechahasta);
        try {
            ficheroPdf = new FileOutputStream(archivo);
            PdfWriter.getInstance(
                    documento,
                    ficheroPdf).setInitialLeading(20);
        } catch (Exception ex) {
            System.out.println(ex.toString());
        }
        try {
            documento.open();
            documento.add(new Paragraph(ConvertirFechas.fechaAString(fechaSistema) + "     REGISTRO DEL ESTADO CIVIL Y CAPACIDAD DE LAS PERSONAS"));
            documento.add(new Paragraph(cabecera));
            documento.add(new Paragraph("\n"));
            Paragraph parrafo2 = new Paragraph(nombreempleado);
            parrafo2.setAlignment(1);//el 1 es para centrar
            documento.add(parrafo2);
            documento.add(new Paragraph("\n"));
            documento.add(new Paragraph("\n"));
            PdfPTable tabla = new PdfPTable(6);
            //el numero indica la cantidad de Columnas//
            tabla.addCell("N° Lic.");
            tabla.addCell("Inicio");
            tabla.addCell("Fin");
            tabla.addCell("Restan");
            tabla.addCell("Tipo");
            tabla.addCell("Estado");
            List<Licencia> lic = (List<Licencia>) empleado.getLicenciaLista();
            /////// fechadesde y fechahasta don DATE y las voy a convertir a CALENDAR
            Calendar cali = Calendar.getInstance();
            cali.setTime(fechadesde);
            for (Licencia licencia : lic) {
                List<EstadoLicencia> el = (List<EstadoLicencia>) licencia.getEstadoLicenciaCollection();
                fechaBD = licencia.getFechaInicioLicencia();
                fd = fechadesde.compareTo(fechaBD);
                fh = fechahasta.compareTo(fechaBD);
                if (fd >= 0 || fh >= 0) {
                    tabla.addCell(Integer.toString(licencia.getNumeroLicencia()));
                    tabla.addCell(ConvertirFechas.fechaAString(licencia.getFechaInicioLicencia()));
                    tabla.addCell(ConvertirFechas.fechaAString(licencia.getFechaFinLicencia()));
                    for (int i = 0; i < el.size(); i++) {
                        estado = el.get(i).getNombreEstado();
                    }
                    if (estado == null || estado.equals("Finalizada") || estado.equalsIgnoreCase("Rechazada")) {
                        tabla.addCell("");
                    } else {
                        tabla.addCell(Integer.toString(ConvertirFechas.diferenciaEnDias2(licencia.getFechaFinLicencia(), licencia.getFechaInicioLicencia())));
                    }
                    tabla.addCell(licencia.getIdtipoLicencia().getDescripcion());
                    for (int i = 0; i < el.size(); i++) {
                        estado = el.get(i).getNombreEstado();
                        if (estado == null) {
                           break;
                        } else {
                            tabla.addCell(estado);
                        }
                    }
                }
                cali.setTime(fechadesde);
                cali.add(Calendar.DATE, 1);
                fechadesde = cali.getTime();
            }
            documento.add(tabla);
            documento.add(new Paragraph("______________________________________________________________________________"));
            documento.close();
        } catch (Exception ex) {
            System.out.println(ex.toString());
        }
    }
}
